home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / circuits / spice2g6.z / spice2g6 / spice / Fortran / cmeyer.f < prev    next >
Encoding:
Text File  |  1989-02-03  |  2.1 KB  |  89 lines

  1.       subroutine cmeyer (vgs0,vgd0,vgb0,von0,vdsat0,vgs1,vgd1,vgb1,
  2.      1   covlgs,covlgd,covlgb,cgs0,cgd0,cgb0,cgs1,cgd1,cgb1)
  3.       implicit double precision (a-h,o-z)
  4. c
  5. c     this routine computes the mosfet overlap capacitances as functions
  6. c of the device terminal voltages.
  7. c
  8. c spice version 2g.6  sccsid=status 3/15/83
  9.       common /status/ omega,time,delta,delold(7),ag(7),vt,xni,egfet,
  10.      1   xmu,sfactr,mode,modedc,icalc,initf,method,iord,maxord,noncon,
  11.      2   iterno,itemno,nosolv,modac,ipiv,ivmflg,ipostp,iscrch,iofile
  12. c spice version 2g.6  sccsid=mosarg 3/15/83
  13.       common /mosarg/ vto,beta,gamma,phi,phib,cox,xnsub,xnfs,xd,xj,xld,
  14.      1   xlamda,uo,uexp,vbp,utra,vmax,xneff,xl,xw,vbi,von,vdsat,qspof,
  15.      2   beta0,beta1,cdrain,xqco,xqc,fnarrw,fshort,lev
  16. c spice version 2g.6  sccsid=knstnt 3/15/83
  17.       common /knstnt/ twopi,xlog2,xlog10,root2,rad,boltz,charge,ctok,
  18.      1   gmin,reltol,abstol,vntol,trtol,chgtol,eps0,epssil,epsox,
  19.      2   pivtol,pivrel
  20.       indax=1
  21.       vgs=vgs1
  22.       vgd=vgd1
  23.       vgb=vgb1
  24.       vons=von
  25.       vbs=vgs-vgb
  26.       vdbsat=vdsat-vbs
  27.       vdb=vgb-vgd
  28.    10 vds=vgs-vgd
  29.       vgbt=vgs-vons
  30.       if (vgbt.gt.-phi) go to 100
  31.       cgb=cox+covlgb
  32.       cgd=covlgd
  33.       cgs=covlgs
  34.       go to 430
  35. c
  36. c
  37.   100 if (vgbt.gt.-phi/2.0d0) go to 200
  38.       cgb=-vgbt*cox/phi+covlgb
  39.       cgd=covlgd
  40.       cgs=covlgs
  41.       go to 430
  42. c
  43. c
  44.   200 if (vgbt.gt.0.0d0) go to 300
  45.       cgb=-vgbt*cox/phi+covlgb
  46.       cgd=covlgd
  47.       cgs=cox/(7.5d-1*phi)*vgbt+cox/1.5d0+covlgs
  48.       go to 430
  49. c
  50. c
  51.   300 if (vdbsat.gt.vdb) go to 400
  52.       cgb=covlgb
  53.       cgd=covlgd
  54.       cgs=cox/1.5d0+covlgs
  55.       go to 430
  56. c
  57. c
  58.   400 vddif=2.0d0*vdbsat-vdb
  59.       vddif1=vdbsat-vdb-1.0d-12
  60.       vddif2=vddif*vddif
  61.       cgd=cox*(1.0d0-vdbsat*vdbsat/vddif2)/1.5d0+covlgd
  62.       cgs=cox*(1.0d0-vddif1*vddif1/vddif2)/1.5d0+covlgs
  63.       cgb=covlgb
  64. c
  65. c
  66.   430 go to (440,560), indax
  67.   440 indax=2
  68.       cgs1=cgs
  69.       cgd1=cgd
  70.       cgb1=cgb
  71.       vgs=vgs0
  72.       vgd=vgd0
  73.       vgb=vgb0
  74.       vons=von0
  75.       vbs=vgs-vgb
  76.       vdbsat=vdsat0-vbs
  77.       vdb=vgb-vgd
  78.       go to 10
  79. c
  80. c
  81.   560 cgs0=cgs
  82.       cgd0=cgd
  83.       cgb0=cgb
  84. c
  85. c  finished
  86. c
  87.  1000 return
  88.       end
  89.